<?php
/**
 * Interface RepoServiceInterface
 * @package App\Services\Interfaces
 * 各资源仓库的CRUD操作, 用来根据权限操作指定范围的数据
 */

namespace App\Services\Interfaces;
use Illuminate\Database\Eloquent\Model;

interface RepoServiceInterface
{
    /**
     * 新增数据
     * @param array|null $_options
     * @return Model
     */
    public function create(array $_options=null):Model;

    /**
     * 查询数据集合
     * @param int $limit
     * @return mixed
     */
    public function read($limit=0);

    /**
     * 查询数据详情
     * @param array $_filter
     * @return Model
     */
    public function find(array $_filter):Model;

    /**
     * 修改数据
     * @param array $_filter
     * @param array $_update_data
     * @return bool
     * <code>
     * $instance->update(['id'=>'xxx'], ['name'=>'newName']);
     * </code>
     */
    public function update(array $_filter, array $_update_data):bool;

    /**
     * 删除数据
     * @param array $_filter
     * @return bool
     */
    public function delete(array $_filter):bool;
}